/*
Copyright (c) [2019年5月1日] [吴超]
[MBT_studio] is licensed under Mulan PSL v2.
You can use this software according to the terms and conditions of the Mulan PSL v2.
You may obtain a copy of Mulan PSL v2 at:
http://license.coscl.org.cn/MulanPSL2
THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
See the Mulan PSL v2 for more details.
*/
#include "2D视口工作区.h"
#include "ui2D编辑视口.h"

static std::set<C_工作区页面*> g2D视口页面;


class C_2D视口状态条 : public C_状态条 {

public:
	C_2D视口状态条(S_UI创建环境& ctx) : C_状态条(ctx) {
		m_View = nullptr;
	}


};




static bool on_2D视口打开(C_Widget* self, bool show) {
	C_工作区页面* 工作区 = dynamic_cast<C_工作区页面*>(self);
	//C_表格视口::g当前操作表格视口 = (C_表格视口*)(f_ui_get滚动框视口(工作区->mui_画布页面));

	//f_表格视口页面_设置当前节点数据();
	return false;
}

void f_工作区页面_2D视口初始化(S_UI创建环境 & ctx) {

}


C_工作区页面* f_工作区_创建2D视口(S_UI创建环境& ctx) {
	auto* ui2D编辑视口滚动框 = f_工作区页面_创建2D视口(ctx);

	C_状态条* tool = new C_状态条(ctx);

	C_工作区页面* 工作区 = new C_工作区页面(
		E_工作区类型::e_2D视口, 
		ctx,
		E_方向::e_横向, 
		ui2D编辑视口滚动框, 
		tool, 
		static_cast<C_2D编辑视口*>(f_ui_get滚动框视口(ui2D编辑视口滚动框))->m_属性栏);

	工作区->mf_打开关闭 = on_2D视口打开;

	g2D视口页面.insert(工作区);
	return 工作区;
}

void f_工作区_销毁2D视口(C_工作区页面* page) {

}

void f_工作区_重构2D视口状态条(C_状态条* 状态条) {

}

void f_工作区_重构2D视口属性栏(C_2D编辑视口* 视口) {
	std::vector<S_Props> props;

	for (auto& ob : 视口->m_物体) {
		auto* 物体扩展属性 = f_OE_取可编辑物体属性(ob);

		if (物体扩展属性) {
			props.push_back(物体扩展属性->m_当前激活UV层);
		}
	}

	视口->m_属性栏->f_构建属性部件(props);
}



void f_2D编辑视口页面_设置当前节点数据() {
	std::vector<C_节点基类*> nodes = f_global_get激活节点();
	if (C_2D编辑视口::g当前操作2D编辑视口) {
		C_2D编辑视口::g当前操作2D编辑视口->m_节点 = nodes;
		C_2D编辑视口::g当前操作2D编辑视口->f_数据绘制();
	}
}

void f_2D编辑视口页面_联动更新() {
	if (C_2D编辑视口::g当前操作2D编辑视口) {
		C_2D编辑视口::g当前操作2D编辑视口->f_数据绘制();

		f_工作区_重构2D视口属性栏(C_2D编辑视口::g当前操作2D编辑视口);
	}
}







void f_2D视口工作区_保存工作区状态(FILE* f, C_工作区页面* 页面) {
	auto 文件块 = f_file_构建文件块信息(E_节点工程文件块类型::e_工程文件块_2D视口工作区状态, S_节点数据::g_文件版本号);
	S_UI8Array* 块 = (S_UI8Array*)f_core_array_new(0, sizeof(uint8));

	//f_prop_Save(m_计算类型, 块);

	f_file_保存文件块(f, 文件块, 块);
}

void f_2D视口工作区_加载工作区状态(FILE* f, C_工作区页面* 页面) {
	S_文件块 文件块 = f_file_读取文件块(f);
	if (文件块.m_块类型 == E_节点工程文件块类型::e_工程文件块_2D视口工作区状态) {
		const uint8* 下一次读取数据指针 = 文件块.m_data;
		if (f_file_版本对比(文件块, S_节点数据::g_低版本号_0, S_节点数据::g_文件版本号)) {

		}
		//下一次读取数据指针 = f_prop_Load(m_计算类型, 下一次读取数据指针);
	}
	free(文件块.m_data);
}





